平成20年 春期 基本情報技術者 午後 問11
問11 COBOL次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 比例代表選挙において,得票ファイルを入力し,ドント式で各政党の当選者数を決定して, 政党別獲得議席数リストを出力するプログラムである。ドント式とは,各政党の得票数を 整数1,2,3,…で割ってゆき,その商の大きい順に議席定数に達するまで議席を 各政党に配分する方式である。議席定数 15 名の場合の例を表1に示す。
注 @〜Dは当選の順番を示す。
図1得票ファイル VOTE-F のレコード様式 @ 政党数は最大 50 とする。 A 得票ファイルのデータに誤りはないものとする。 (2) 議席定数は,このプログラムヘのパラメタとして渡され,数字3けたで値は1以上とする。 (3) 政党別獲得議席数リストファイル PRINT-F の印字様式は,図2のとおりである。
図2 政党別獲得議席数リストファイル PRINT-F の印字様式 A 獲得議席数の多い順に印字する。
〔プログラム〕 (行番号) 1 DATA DIVISI0N. 2 FILE SECTI0N. 3 FD VOTE-F. 4 01 VOTE-R. 5 05 V-PARTY-NAME PIC X(20). 6 05 V-VALUE PIC 9(10). 7 FD PRINT-F. 8 01 PRINT-R. 9 05 P-PARTY-NAME PIC X(20). 10 05 FILLER PIC X(05). l1 05 P-SEATS PIC ZZ9. 12 SD SORT-F. 13 01 SORT-R. 14 05 S-PARTY-NAME PIC X(20). 15 05 S-VPOINT PIC 9(10). 16 WORKING-STORAGE SECTION. 17 01 EOF-SW PIC 9(01). 18 01 FOUND-SW PIC 9(01). 19 01 SEAT-CNT PIC 9(03). 20 01 RESULT-INFO. 21 05 R-CNT PIC 9(03). 22 05 R-TBL OCCURS 50. 23 10 R-PARTY-NAME PIC X(20). 24 10 R-SEATS PIC 9(10). 25 01 WK-I PIC 9(10). 26 LINKAGE SECTION. 27 01 NUM-SEATS PIC 9(03). 28 PROCEDURE DIVISION USING NUM-SEATS. 29 MAIN-CTL. 30 MOVE 0 TO R-CNT. 31 SORT SORT-F 32 INPUT PROCEDURE S-INPUT-PROC 33 OUTPUT PROCEDURE S-OUTPUT-PROC. 34 PERFORM PRINT-PROC. 35 EXIT PROGRAM. 36 S-INPUT-PROC. 37 OPEN INPUT VOTE-F. 38 MOVE 0 TO EOF-SW. 39 PERFORM UNTIL EOF-SW = 1 40 READ VOTE-F AT END MOVE 1 TO EOF-SW 41 NOT AT END 42 PERFORM VARYING WK-I FROM 1 BY 1 43 UNTIL WK-I > NUM-SEATS 44 MOVE V-PARTY-NAME TO S-PARTY-NAME 45 DIVIDE V-VALUE BY WK-I GIVING S-VPOINT 46 RELEASE SORT-R 47 END-PERFORM 48 END-READ 49 END-PERFORM. 50 CLOSE VOTE-F. 51 S-OUTPUT-PROC. 52 MOVE 0 TO EOF-SW. 53 PERFORM VARYING SEAT-CNT FROM 1 BY 1 54 55 RETURN SORT-F AT END MOVE 1 TO EOF-SW 56 NOT AT END PERFORM REGIST-RTBL 57 END-RETURN 58 END-PERFORM. 59 REGIST-RTBL. 60 MOVE 0 TO FOUND-SW. 61 PERFORM VARYING WK-I FROM 1 BY 1 62 UNTIL WK-I > R-CNT OR FOUND-SW = 1 63 IF S-PARTY-NAME = R-PARTY-NAME(WK-I) THEN 64 65 MOVE 1 TO FOUND-SW 66 END-IF 67 END-PERFORM. 68 IF FOUND-SW = 0 THEN 69 ADD 1 TO R-CNT 70 MOVE S-PARTY-NAME TO R-PARTY-NAME(R-CNT) 71 72 END-IF. 73 PRINT-PROC. 74 OPEN OUTPUT PRINT-F. 75 PERFORM VARYING WK-I FROM 1 BY 1 UNTIL WK-I > R-CNT 76 MOVE SPACE TO PRINT-R 77 MOVE R-PARTY-NAME(WK-I) TO P-PARTY-NAME 78 MOVE R-SEATS (WK-I) TO P-SEATS 79 WRITE PRINT-R 80 END-PERFORM. 81 CLOSE PRINT-F. 設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。 a に関する解答群 イ ASCENDING KEY S-VPOINT ウ DESCENDING KEY S-PARTY-NAME エ DESCENDING KEY S-VPOINT イ UNTIL SEAT-CNT >= NUM-SEATS ウ UNTIL SEAT-CNT > NUM-SEATS OR EOF-SW = 1 エ UNTIL SEAT-CNT <= NUM-SEATS イ ADD 1 TO R-SEATS(WK-I) ウ MOVE 1 TO R-SEATS(R-CNT) エ MOVE 1 TO R-SEATS(WK-I + 1) オ MOVE 1 TO R-SEATS(WK-I - 1)
設問2 この方式では,最終当選順位と次点以降の順位の商が等しい場合が起こりうる。 また,最終当選順位の前にも等しい商での当選が並んでいる可能性がある。 このため,最終当選順位と次点の順位の商が同じ場合は,次のメッセージ "m_WAY TIE FOR n-th PLACE"(第 n 位から m 名が同点である)を表示するように プログラムを変更する。 次の表2中の に入れる正しい答えを,解答群の中から選べ。
ウ 行番号 52 と 53 の間 エ 行番号 56 と 57 の問 オ 行番号 58 と 59 の間
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||||||||||